package com.ruoyi.routineItem.service.impl;

import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.check.CheckEmptyUtil;
import com.ruoyi.routineItem.domain.Item;
import com.ruoyi.routineItem.domain.ItemSpecs;
import com.ruoyi.routineItem.mapper.ItemMapper;
import com.ruoyi.routineItem.mapper.ItemSpecsMapper;
import com.ruoyi.routineItem.service.IItemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * 服务项目Service业务层处理
 *
 * @author ruoyi
 * @date 2025-04-07
 */
@Service
public class ItemServiceImpl implements IItemService {
    @Autowired
    private ItemMapper itemMapper;
    @Resource
    private ItemSpecsMapper itemSpecsMapper;

    /**
     * 查询服务项目
     *
     * @param id 服务项目主键
     * @return 服务项目
     */
    @Override
    public Item selectItemById(Long id) {
        return itemMapper.selectItemById(id);
    }

    /**
     * 查询服务项目列表
     *
     * @param item 服务项目
     * @return 服务项目
     */
    @Override
    public List<Item> selectItemList(Item item) {
        return itemMapper.selectItemList(item);
    }

    /**
     * 新增服务项目
     *
     * @param item 服务项目
     * @return 结果
     */
    @Override
    public int insertItem(Item item) {
        item.setCreateTime(DateUtils.getNowDate());
        int inserted = itemMapper.insertItem(item);
        if (!CheckEmptyUtil.isEmpty(item.getItemSpecsList())){
            for (ItemSpecs itemSpecs : item.getItemSpecsList()){
                ItemSpecs insertItemSpecs = new ItemSpecs();
                insertItemSpecs.setItemId(item.getId());
                insertItemSpecs.setItemSpecsName(itemSpecs.getItemSpecsName());
                insertItemSpecs.setItemSpecsTime(itemSpecs.getItemSpecsTime());
                insertItemSpecs.setItemSpecsPrice(itemSpecs.getItemSpecsPrice());
                insertItemSpecs.setItemSpecsMemberPrice(itemSpecs.getItemSpecsMemberPrice());
                itemSpecsMapper.insertItemSpecs(insertItemSpecs);
            }
        }
        return inserted;
    }

    /**
     * 修改服务项目
     *
     * @param item 服务项目
     * @return 结果
     */
    @Override
    public int updateItem(Item item) {
        item.setUpdateTime(DateUtils.getNowDate());
        return itemMapper.updateItem(item);
    }

    /**
     * 批量删除服务项目
     *
     * @param ids 需要删除的服务项目主键
     * @return 结果
     */
    @Override
    public int deleteItemByIds(Long[] ids) {
        if (!CheckEmptyUtil.isEmpty(ids)){
            for (Long id : ids) {
                Integer count = itemSpecsMapper.selectCount(id);
                if (count > 0){
                    throw new RuntimeException("请先删除项目规格");
                }
            }
        }

        return itemMapper.deleteItemByIds(ids);
    }

    /**
     * 删除服务项目信息
     *
     * @param id 服务项目主键
     * @return 结果
     */
    @Override
    public int deleteItemById(Long id) {
        Integer count = itemSpecsMapper.selectCount(id);
        if (count > 0){
            throw new RuntimeException("请先删除项目规格");
        }
        return itemMapper.deleteItemById(id);
    }
}
